﻿using UnityEngine;
using System.Collections;

/// <summary>
/// 캐릭터 컨트롤 기반
/// </summary>
public class BaseController : MonoBehaviour
{
	// Properties

	[SerializeField]
	BaseCharacter		m_character;			// 이 오브젝트로 조종하는 캐릭터



	// Members


	protected BaseCharacter character
	{
		get
		{
			return m_character;
		}
	}

	protected Transform localT
	{
		get;
		private set;
	}

	protected bool moving
	{
		get;
		set;
	}




	void Awake()
	{
		localT	= transform;

		OnInitialize();
	}

	void Update()
	{
		if(GameScene.gameReady)					// * 게임이 완전히 준비된 상태에서만 처리
			OnUpdate();
	}

	void FixedUpdate()
	{
		if (GameScene.gameReady)
		{
			OnFixedUpdate();

			// 물리 이동은 FixedUpdate 에서 처리해줘야한다
			if (moving)
			{
				character.Move();
			}
		}
	}



	/// <summary>
	/// 초기화 (유저)
	/// </summary>
	protected virtual void OnInitialize()
	{
	}

	/// <summary>
	/// 매 업데이트시마다 호출됨
	/// </summary>
	protected virtual void OnUpdate()
	{
	}

	/// <summary>
	/// 매 FixedUpdate마다 호출됨
	/// </summary>
	protected virtual void OnFixedUpdate()
	{
	}
}
